<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 静态成员：静态成员是属于类的成员 不属于对象的成员； 调用不需要实例化；

        // ES5类
        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // Person.num = 10;  //静态属性；
        // Person.fn = function(){
        //     console.log("fn");
        // }
        // // let zhangsan = new Person("张三",20)
        // console.log(Person.num);
        // Person.fn();

        // ES6 静态成员  static 修饰符来修饰
        // class Person{
        //     static num = 10;  //静态属性  属于类的属性和方法；
        //     constructor(name,age){
        //         this.name = name;
        //         this.age = age;
        //     }
        //     static fn(){  //静态方法
        //         console.log("fn");
        //     }
        // }
        // // 静态成员不需要实例化
        // console.log( Person.num);
        // Person.fn();

        // Person ----》生产人对象； 所有在 this上的成员都是 对象的属性和方法
        // 静态成员 都是Person的属性和方法；


        // 如何使用 ；想统计 一个类被实例化的次数；
        // let num = 0;
        // class Person{
        //     static num = 0;
        //     constructor(name){
        //         // this.num = 0;
        //         // num++;
        //         Person.num++;
        //         this.name = name;
        //     }
        // }

        // let zhangsan = new Person("张三");
        // let lisi = new Person("李四");
        // // console.log(num);
        // console.log(Person.num);



        // 现在需要每一个类只能被实例化一次，如果在实例化就返还之前的实例（对象）；
        // 全局变量保存实例化的状态；
        // let instance = null;
        // 单例模式；  window  document
        class Person{
            static instance = null;
            constructor(name){
                if(!Person.instance){
                    Person.instance = this;
                }else{
                    return Person.instance;
                }
                this.name = name;
            }
        }
        let zhangsan = new Person("张三");
        let lisi = new Person("李四");
        console.log(zhangsan,lisi);








    </script>
</body>
</html>